#include "queue.h"


//typedef struct {
//    PQ qe1;
//    PQ qe2;
//} MyStack;
//
//void retempty(MyStack* obj, PQ* cur1, PQ* cur2)
//{
//
//    if (!QEmpty(&(obj->qe1)))
//    {
//        cur1 = &(obj->qe2);
//        cur2 = &(obj->qe1);
//    }
//    else
//    {
//        cur1 = &(obj->qe1);
//        cur2 = &(obj->qe2);
//    }
//}
//MyStack* myStackCreate() 
//{
//    MyStack* ret = (MyStack*)malloc(sizeof(MyStack));
//    if (!ret)
//    {
//        return NULL;
//    }
//    QInit(&(ret->qe1));
//    QInit(&(ret->qe2));
//    return ret;
//}
//
//void myStackPush(MyStack* obj, int x) {
//    assert(obj);
//    PQ* cur1 = NULL;
//    PQ* cur2 = NULL;
//    retempty(obj, cur1, cur2);
//    QPush(cur1, x);
//}
//
//
//
//int myStackTop(MyStack* obj) {
//    assert(obj);
//    assert(&(obj->qe1) || &(obj->qe2));
//    PQ* cur1 = NULL;
//    PQ* cur2 = NULL;
//    retempty(obj, cur1, cur2);
//    return cur1->tail->data;
//}
//
//int myStackPop(MyStack* obj) {
//    assert(obj);
//    assert(&(obj->qe1) || &(obj->qe2));
//    PQ* cur1 = NULL;
//    PQ* cur2 = NULL;
//    retempty(obj, cur1, cur2);
//    while (!QEmpty(cur1))
//    {
//        if (cur1->top == 1)
//        {
//            break;
//        }
//        QPush(cur2, Qtop(cur1));
//        QPop(cur1);
//        cur1->top--;
//    }
//    int x = Qtop(cur1);
//    QPop(cur1);
//    cur1->top--;
//
//    return x;
//}
//
//bool myStackEmpty(MyStack* obj) {
//    assert(obj);
//    PQ* cur1 = NULL;
//    PQ* cur2 = NULL;
//    retempty(obj, cur1, cur2);
//    return QEmpty(cur1);
//}
//
//void myStackFree(MyStack* obj) {
//    assert(obj);
//    PQ* cur1 = NULL;
//    PQ* cur2 = NULL;
//    retempty(obj, cur1, cur2);
//    QDestry(cur1);
//    cur1 = cur2 = NULL;
//    free(obj);
//}























int main()
{
	PQ pq;
	QInit(&pq);
	QPush(&pq, 12);
	QPush(&pq, 11);
	QPush(&pq, 10);
	QPush(&pq, 9);
	QPush(&pq, 8);
	QPush(&pq, 6);
	QPush(&pq, 5);
	QPush(&pq, 4);
	QPush(&pq, 3);
	QPush(&pq, 2);
	while (QEmpty(&pq))
	{
		printf("%d\n", Qtop(&pq));
		QPop(&pq);
	}
	printf("%d", pq.top);
    //MyStack* obj = myStackCreate();
    ////myStackPop(p1);
    //myStackPush(obj, 1);


	return 0;
}